class C:

    def __init__(self, name, age):
        self.name = name
        self.__age = age

    def __getattribute__(self, attrname):
        print("拿来吧你～")
        return super().__getattribute__(attrname)

    # 试图访问一个不存在的属性的时候会调用该方法
    def __getattr__(self, attrname):
        if attrname == 'FishC':
            print("I love FishC")
        else:
            raise AttributeError(attrname)


c = C("小甲鱼", 18)

# FishC 是一个不存在的属性
c.FishC
# 拿来吧你～
# I love FishC

c.x
# 拿来吧你～
# AttributeError: x

# 当访问属性的时候首先调用方法 __getattribute__，如果属性不存在就回去去调用方法 __getattr__
